#ifndef USERMANAGE_H
#define USERMANAGE_H

#include <QDialog>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QWidget>
#include <QTableWidget>
#include <QComboBox>
#include <QJsonArray>
#include <QJsonObject>
#include <QFile>

class mythread;
class newUser;
class MessagePops;
class amendUser;
class LComboBox;

extern QStringList accountUid;//保存所有用户指静脉id信息

namespace Ui {
class UserManage;
}

class UserManage : public QDialog
{
    Q_OBJECT

public:
    explicit UserManage(QWidget *parent = nullptr);
    ~UserManage();
    void analysisMedicalWorkers(QByteArray Data, int location_ = 1);//解析显示医护人员数据
    void analysisMedicalWorkers2(QByteArray Data,int page);//解析显示医护人员数据----翻页
    void setBytes(QByteArray bytes_){bytes = bytes_;}
    bool eventFilter(QObject *watched, QEvent *event);   //事件过滤

private slots:
    //自定义槽函数
    void receMessage2(QString data);//自定义提示窗口接收槽函数
    void receUserMan(QString data);//自定义新建用户接收槽函数
    void receAmendMan(QString data);//自定义修改用户接收槽函数
    void receOperateItem(QString data);//自定义操作接收槽函数
    void receLComboBox(int,QString);//自定义下拉复选框接收槽函数

private slots:
    //http接收签名图片文件槽函数
    void httpFinished();//完成下载后的处理
    void httpReadyRead();//接收数据时的处理

    //http接收指静脉文件槽函数
    void httpFinished2();//完成下载后的处理
    void httpReadyRead2();//接收数据时的处理

    void actionFinished(QNetworkReply*);//禁用或者启用用户
    void actionFinished2(QNetworkReply*);//重置密码

//    //操作按钮对应信号与槽
//    void OnBtnClicked();//禁用 启用
//    void OnBtnClicked2();//重置密码
//    void OnBtnClicked3();//修改信息

    void on_lineEdit_returnPressed();//姓名输入框按下回车
    void on_lineEdit_2_returnPressed();//账号输入框按下回车
    void on_pushButton_3_clicked();//点击搜索按钮
    void on_pushButton_2_clicked();//点击重置按钮

    void on_comboBox_activated(const QString &arg1);
    void on_comboBox_2_activated(const QString &arg1);
    void on_pushButton_clicked();//点击新建用户按钮

    void FlipOver();//翻页触发槽函数
    void LeftOver();//左翻页槽函数
    void RightOver();//右翻页槽函数

    void on_lineEdit_textChanged(const QString &arg1);

    void on_lineEdit_2_textChanged(const QString &arg1);

signals:
    void sendManMain(int, int);   //用来传递此窗口和主界面的信号


private:
    void initialize();//初始化界面
    void userDefinedHeadline(QTableWidget *tableWidget, QTableWidget *Headline, QStringList headerText);//自定义标题
    void setcomboBox(QComboBox *comboBox);//设置QComboBox样式
//    QStringList gainUid();//获取所有用户UID
    void RefreshFingerVein();//刷新指静脉信息，查看是否有新的指静脉文件
    bool DeleteFileOrFolder(const QString &strPath);//要删除的文件夹或文件的路径

    void setPbStyleSheet();//设置翻页初始样式
    void setNumber(int x, int y, int w, int h, int number);//设置表格页数小于5页
    void showButton();//按钮显示位置样式
    QString comboBoxText(QComboBox *comboBox);//解析获取comboBox选中文本
    QString comboBoxText(LComboBox *comboBox);//解析获取lcomboBox选中文本

    //操作按钮
    void OnBtnClicked(int row, int column, QWidget *w_parent);//禁用 启用
    void OnBtnClicked2(int row, int column);//重置密码
    void OnBtnClicked3(int row, int column);//修改信息

    //遮罩窗口突出显示弹窗
    void showShadeWindow();//显示遮罩窗口
    void closeShadeWindow();//关闭遮罩窗口

private:
    LComboBox *lComboBox;//身份
    LComboBox *lComboBox2;//状态
    QWidget *mpShadeWindow;//遮罩窗口突出显示弹窗
    QString resetPassword;//保存重置密码信息
    QStringList accountNumber;//保存所有用户账户信息
//    QStringList accountUid;//保存所有用户指静脉id信息
    mythread *thread;
    int receDigitalVeinUser;//记录接收指静脉文件下标
    QJsonArray valDigitalVeinUser;//记录指静脉信息
    QString DigitalVeinUserPath;//记录指静脉文件路径
    QFile *Veinfile;//从服务器接收指静脉文件指针
    QStringList FingerVeinName;//存放指静脉文件名称

    Ui::UserManage *ui;
    newUser *newuser;
    amendUser *amenduser;
    QByteArray medicalWorkersData;//保存医护人员数据
    int sign1 = 0;
    int signature_pathNumber = 0;//记录签名文件遍历位置
    int signature_pathNumber2 = 0;//记录签名文件显示位置
    int ifpbl = 0;//记录判断左按钮是否被禁用
    int ifpbr = 1;//记录判断右按钮是否被禁用
    QNetworkReply *reply;
    QNetworkReply *reply2;
    QByteArray signatureImage;//存放签名图片
    int RowCount;//设置表格行数
    QByteArray bytes;//http返回id码
    MessagePops *mps;
    MessagePops *mps2;//重置密码提示框

    int pagination = 1;//表格页数
    int location = 1;//记录表格位置
    QPushButton *PB[5];//保存页数按钮指针
};

#endif // USERMANAGE_H
